<?php
  
 /**
  * @package JooS
  * @subpackage Syntax_PHPackager
  */

  require_once "JooS/Syntax/Complex/Transition.php";

 /**
  * Value ::= Number | String | Boolean | Variable | Config | Array | Function | Operator_Prefix, Value | "(", Expression, ")";
  */
  class JooS_Syntax_PHPackager_Value extends JooS_Syntax_Complex_Transition {
    /**
     * @return JooS_Syntax_Complex_Choose
     */
    public function createRule() {
      $parser = $this->getParser();
      
      return $parser->createSyntax("Complex_Choose", array(
        $parser->createSyntax("Common_Number"),
        $parser->createSyntax("Common_String"),
        $parser->createSyntax("Common_Boolean"),
        $parser->createSyntax("PHPackager_Variable_Syntax"),
        $parser->createSyntax("PHPackager_Config_Get"),
        $parser->createSyntax("PHPackager_Array_Syntax"),
        $parser->createSyntax("PHPackager_Function_Call"),
        $parser->createSyntax("Complex_Concatenate", array(
          $parser->createSyntax("PHPackager_Operator_Prefix"),
          $parser->createSyntax("PHPackager_Value")
        )), 
        $parser->createSyntax("Complex_Concatenate", array(
          $parser->createSyntax("Simple_Symbol", "("),
          $parser->createSyntax("Common_Whitespace"),
          $parser->createSyntax("PHPackager_Expression"),
          $parser->createSyntax("Common_Whitespace"),
          $parser->createSyntax("Simple_Symbol", ")"),
        )), 
      ));
    }
  }
